En base a la tabla de líneas arriba, vamos a detectar los siguientes CIE-10 como si fueran evidencia de dialisis: - Z99.2 (Dependence on renal dialysis) - Z49.1 (Extracorporeal dialysis) - Z49.2 (Other dialysis - peritoneal dyalisis) - N18.5 (CKD Stage 5) - N18.6 (CKD con dialisis) - Z94.0 (Kidney transplant status)
Por cada individuo (autogenerado), vamos ahora a ordenar de menor fecha a mayor fecha y quedarnos solo con el de menor fecha (primera fila) eliminado los demás duplicados de auto_cor:
Warning: There were 3 warnings in `mutate()`.
The first warning was:
ℹ In argument: `across(...)`.
Caused by warning:
! NAs introducidos por coerción
ℹ Run `dplyr::last_dplyr_warnings()` to see the 2 remaining warnings.
Como se puede apreciar de arriba, no sabemos las unidades de algunos resultados de creatinina. Una forma de considerar mantener estos datos o eliminarlos es evaluar si el rango de sus valores cae dentro de lo esperado para esta variable. Por tal motivo, compararemos la distrbución de estos valores.
data_pred_nac |>ggplot(aes(x = creat_ser_unid, y = creatinina_cor)) +geom_boxplot()
Observamos que en la categoría “No info” simplemente no hay valores (todos son perdidos), mientras que en la categoría “No unidades” la dispersión de valores cae dentro del rango aceptable para creatinina sérica. Por tal motivo, decidimos que es razonable concluir que sí sean valores de creatinina en sus unidades original y procederemos a mantenerlos.
data_pred_nac <- data_pred_nac |>mutate(creat_ser_unid =case_match(creat_ser_unid, "No info"~NA, "mg/dl"~"mg/dl", "No unidades"~"mg/dl" ))data_pred_nac |>count(creat_ser_unid)
Se aprecia que casi todos son datos perdidos, sin embargo, estos datos pueden recuperarse de dos maneras, en ambos casos haciendo uso de las columnas tasa_ac_cor y desc_tasa_ac. Como se puede apreciar, la columna desc_tasa_ac indica si el valor de tasa_ac_cor es el de la razón albuminuria-creatininuria o es el de la creatinuria a secas:
data_pred_nac |>count(desc_tasa_ac)
Vamos a usar esta información para corregir los valores de creatinuria_cor. Primero vamos a simplificar los valores de la variable desc_tasa_ac:
Descriptive Statistics
data_pred_nac
Group: desc_tasa_ac = Creatinuria (mg/dL)
N: 156871
Mean Std.Dev Min Median Max N.Valid Pct.Valid
--------------------- ---------- ------------ --------- --------- -------------- ----------- -----------
albuminemia_cor 468.53 7635.52 0.00 4.23 132207.03 4056.00 2.59
albuminuria_cor 474.14 7671.38 0.00 4.39 132096.40 582.00 0.37
anio 2017.32 2.48 2013.00 2018.00 2022.00 156871.00 100.00
crea 0.97 0.53 0.10 0.89 19.67 156332.00 99.66
creatinina 0.97 0.53 0.10 0.89 19.67 156332.00 99.66
creatinuria NA NA NA NA NA 0.00 NA
creatinuria_cor NA NA NA NA NA 0.00 NA
dial 0.01 0.11 0.00 0.00 1.00 156871.00 100.00
dm 0.18 0.39 0.00 0.00 1.00 156871.00 100.00
hta 0.41 0.49 0.00 0.00 1.00 156871.00 100.00
hta_dm 0.12 0.33 0.00 0.00 1.00 156871.00 100.00
sexo 0.47 0.50 0.00 0.00 1.00 156871.00 100.00
tasa_ac_cor 13343.48 3532199.98 0.00 42.48 938940931.00 70662.00 45.04
tfg_cor 83.77 99.92 0.21 79.29 25704.00 133861.00 85.33
Group: desc_tasa_ac = No info
N: 88956
Mean Std.Dev Min Median Max N.Valid Pct.Valid
--------------------- --------- ---------- --------- --------- ----------- ---------- -----------
albuminemia_cor 3153.30 19924.98 0.04 4.36 130726.77 541.00 0.61
albuminuria_cor 1942.49 15778.24 0.01 4.40 130421.57 135.00 0.15
anio 2016.39 2.51 2013.00 2016.00 2022.00 88956.00 100.00
crea 0.98 0.54 0.11 0.90 18.20 88599.00 99.60
creatinina 0.98 0.54 0.11 0.90 18.20 88599.00 99.60
creatinuria 38.07 33.15 5.70 16.30 89.58 15.00 0.02
creatinuria_cor 38.07 33.15 5.70 16.30 89.58 15.00 0.02
dial 0.01 0.12 0.00 0.00 1.00 88956.00 100.00
dm 0.24 0.42 0.00 0.00 1.00 88956.00 100.00
hta 0.52 0.50 0.00 1.00 1.00 88956.00 100.00
hta_dm 0.06 0.24 0.00 0.00 1.00 88956.00 100.00
sexo 0.44 0.50 0.00 0.00 1.00 88956.00 100.00
tasa_ac_cor NA NA NA NA NA 0.00 NA
tfg_cor 84.54 269.88 0.23 78.20 68050.00 65132.00 73.22
Group: desc_tasa_ac = Otros
N: 43
Mean Std.Dev Min Median Max N.Valid Pct.Valid
--------------------- --------- --------- --------- --------- --------- --------- -----------
albuminemia_cor NA NA NA NA NA 0.00 NA
albuminuria_cor NA NA NA NA NA 0.00 NA
anio 2019.00 0.00 2019.00 2019.00 2019.00 43.00 100.00
crea 0.90 0.28 0.54 0.82 1.67 43.00 100.00
creatinina 0.90 0.28 0.54 0.82 1.67 43.00 100.00
creatinuria NA NA NA NA NA 0.00 NA
creatinuria_cor NA NA NA NA NA 0.00 NA
dial 0.00 0.00 0.00 0.00 0.00 43.00 100.00
dm 0.19 0.39 0.00 0.00 1.00 43.00 100.00
hta 0.67 0.47 0.00 1.00 1.00 43.00 100.00
hta_dm 0.14 0.35 0.00 0.00 1.00 43.00 100.00
sexo 0.47 0.50 0.00 0.00 1.00 43.00 100.00
tasa_ac_cor 77.24 22.12 29.74 77.53 116.93 43.00 100.00
tfg_cor NA NA NA NA NA 0.00 NA
Group: desc_tasa_ac = Relación Albuminuria/Creatinuria
N: 23805
Mean Std.Dev Min Median Max N.Valid Pct.Valid
--------------------- --------- ---------- --------- --------- ----------- ---------- -----------
albuminemia_cor 2695.86 18485.72 0.20 4.23 134556.94 343.00 1.44
albuminuria_cor 1908.84 15338.64 0.03 4.40 130177.97 72.00 0.30
anio 2016.72 2.68 2013.00 2016.00 2022.00 23805.00 100.00
crea 0.98 0.46 0.17 0.90 16.70 23667.00 99.42
creatinina 0.98 0.46 0.17 0.90 16.70 23667.00 99.42
creatinuria NA NA NA NA NA 0.00 NA
creatinuria_cor NA NA NA NA NA 0.00 NA
dial 0.01 0.08 0.00 0.00 1.00 23805.00 100.00
dm 0.18 0.39 0.00 0.00 1.00 23805.00 100.00
hta 0.43 0.50 0.00 0.00 1.00 23805.00 100.00
hta_dm 0.26 0.44 0.00 0.00 1.00 23805.00 100.00
sexo 0.50 0.50 0.00 1.00 1.00 23805.00 100.00
tasa_ac_cor 1201.85 14201.39 0.00 32.57 504864.86 16908.00 71.03
tfg_cor 83.34 68.16 0.71 77.40 2014.00 20352.00 85.49
Se aprecia que para la categoría de creatinuria hay un valor excesivamente alto que supera los billone. Valores en este rango son definitivamente no plausibles por lo que procederemos a eliminarlos:
Como era de esperarse, ahora solo la relación albuminuiria/creatinuria maneja rangos muy grandes. Sin embargo, por experiencia previa de análisi de datos de esta variable en nuestro equipo de investigación, hemos podido apreciar valores tan altos como 150 mil. Creemos que, por ser una variable de razón, es posible tener valores inusualmente altos. Por tal motivo, mantendremos estos valores hasta el final del procesamiento y, posteriormente, veremos qué decisión tomar para su manejo.
Ahora veamos mejor el rango de valores analizando solo creatinuria vs otros.
Con esta variable tenemos el problema de que hay dos columnas que podrían contener valores. Vamos a limpiar cada columna por separdo y luego integrarlos en una sola variable.
Descriptive Statistics
albuminuria_cor by desc_albuminuria2
Data Frame: data_pred_nac
N: 4537
Mean Std.Dev Min Median Max N.Valid Pct.Valid
---------------------- ------- --------- ------- -------- --------- --------- -----------
Albumin(?) 80.88 82.23 21.00 50.00 202.50 4.00 0.09
Albuminuria 30.89 179.81 0.00 4.40 3390.00 734.00 3.95
Microalbuminuria 7.18 10.10 0.28 0.35 22.70 5.00 0.95
No info 4.10 0.73 0.70 4.22 5.21 41.00 0.02
Por último, hemos vemos que hay muy pocos individuos con Albumin(?), con microalbuminuria y sin Información. Debido a que no estamos seguros qué valores son y la proporción de etos es insignificante, decidimos convertir en dato perdido estos valores.
Con esta variable tenemos el problema de que hay dos columnas que podrían contener valores. Vamos a limpiar cada columna por separdo y luego integrarlos en una sola variable.
stby(data = data_pred_nac %>%select(desc_albuminemia2, albuminemia_cor), INDICES = data_pred_nac$desc_albuminemia2, FUN = descr, stats ="common", transpose =TRUE)
Warning: There were 2 warnings in `summarise()`.
The first warning was:
ℹ In argument: `min = (structure(function (..., .x = ..1, .y = ..2, . = ..1)
...`.
Caused by warning in `min()`:
! ningún argumento finito para min; retornando Inf
ℹ Run `dplyr::last_dplyr_warnings()` to see the 1 remaining warning.
Descriptive Statistics
albuminemia_cor by desc_albuminemia2
Data Frame: data_pred_nac
N: 40839
Mean Std.Dev Min Median Max N.Valid Pct.Valid
---------------------- ------- --------- ------ -------- --------- --------- -----------
Albumin(?) 14.35 119.31 0.01 4.20 5328.85 4113.00 10.07
Albuminemia 25.88 15.82 2.51 33.80 50.40 22.00 100.00
Albuminuria 43.84 107.48 0.00 20.00 2015.00 423.00 10.61
Microalbuminuria 75.80 366.55 0.30 4.25 2013.00 348.00 30.21
No info NA NA NA NA NA 0.00 NA
Por último, para ser consistentes con el manejo de albuminuria, como desconocemos que es Albulim, vamos a convertir a estos individuos en datos perdidos. Del mismo modo, los que son Albuminemia también serán eliminados porque representan otra variable. Las microalbuminurias también serán eliminadas.
Podemos apreciar que no hay dos columnas con datos, lo que hace que no se contradigan los valores. Vamos a proceder a actualizar la variable ACR para que contenga todos los valore de ACR que se puedan:
Aunque tenemos una variable de tasa de filtracion glomerual estiamda, se aprecia que esta proviene de diversos métodos de cálculos, por lo que no podemos considerarla para el análisis.
Para cada individuo con su fecha, vamos a completar las celdas con datos contiguos.
Vamos a contar el numero de datos perdidos que hay por cada fila, ordenarlas de mayor completitud a menor completitud de datos y eliminar todos los duplicados solo para quedarnos con las filas que más datos tengan.
The legacy packages maptools, rgdal, and rgeos, underpinning the sp package,
which was just loaded, will retire in October 2023.
Please refer to R-spatial evolution reports for details, especially
https://r-spatial.org/r/2023/05/15/evolution4.html.
It may be desirable to make the sf package available;
package maintainers should consider adding sf to Suggests:.
The sp package is now running under evolution status 2
(status 2 uses the sf package in place of rgdal)
datos |>ggplot(aes(x = eGFR_ckdepi, y = acr)) +scale_y_continuous(trans ="log10") +geom_miss_point() +facet_wrap(dial ~ .)
gg_miss_upset(datos)
gg_miss_upset(datos |>select(eGFR_ckdepi, acr))
Luego vamos a proceder a completar las celdas perdidas para cada variable:
A continuacion vamos a hacer una primera limpieza identificado duplicados indenticos de linea y eliminandolos. Se identificaron 9506 filas con duplicados de toda la fila exactamente iguales: